var a = undefined;
a = 1;
a = '2';
// console.log(a);
//  函数名   函数参数类型  函数返回值类型
//  如果返回多种类型    :any
function sayName(name) {
    return '1';
}
// void
// 这个类型只能传入 null undefind
var v = null;
// console.log(v);
// never
function error(message) {
    return new Error(message);
}

function fail() {
    return error("Something faild");
}
// console.log(fail());
// never 类型是任何类型的子类型,也可以赋值给任何类型
// 然而  没有类型是nerver的子类型或可以赋值给never类型(除了never本身之外)
// 即使是any也不可以赋值给never
var s;
var n;
s = "万章";
n = "万章"; //报错,never类型的变量不可以接受其他类型的数据
// 不报错, 一个抛出错误的函数就是never类型
n = (function() { throw new Error('exception'); })();
// 不报错, never类型的数据可以赋值给其他类型的变量
s = (function() { throw new Error('exception'); })();